﻿using System;
using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using ProyectoActivos.Const;
using ProyectoActivos.Daos;
using ProyectoActivos.Util;
using ProyectoActivos.Validate;

namespace ProyectoActivos.Forms.Mantenimiento
{
    public partial class FrmActualizarTipoMovimiento :Form,IValidateForm
    {
        public Boolean CerroSinAccion { get; set; }

        private TipoMovimiento tipoMovimiento;

        private Boolean _valido;

        public FrmActualizarTipoMovimiento(TipoMovimiento tipoMovimiento)
        {
            InitializeComponent();
            CerroSinAccion = true;
            _valido = true;
            this.tipoMovimiento = tipoMovimiento;
        }

        private void FrmActualizarTipoMovimiento_Load(object sender, EventArgs e)
        {
            cmbTipoEntradaOSalida.Items.Add(new ItemGenericoComboBox() { Id = TipoMovimiento.TIPO_MOVIMIENTO_ENTRADA, Descripcion = TipoMovimiento.TIPO_MOVIMIENTO_ENTRADA_CADENA });
            cmbTipoEntradaOSalida.Items.Add(new ItemGenericoComboBox() { Id = TipoMovimiento.TIPO_MOVIMIENTO_SALIDA, Descripcion = TipoMovimiento.TIPO_MOVIMIENTO_SALIDA_CADENA });

            _valido = true;          

            if (tipoMovimiento.Id != 0)
            {
                ActionExecutor.Execute(this, delegate
                {
                    cmbTipoEntradaOSalida.SelectedIndex = ComboUtils.GetIndice(cmbTipoEntradaOSalida, tipoMovimiento.TipoEntradaOSalida);
                    txtCodigo.Text = tipoMovimiento.Codigo;
                    txtDescripcion.Text = tipoMovimiento.Descripcion;
                    chkEntregaAPersonal.Checked = tipoMovimiento.EntregaAPersonal;
                    chkMantenimiento.Checked = tipoMovimiento.Mantenimiento;
                });
            }
            
        }

        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }
          
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();

            FormsAssert.AssertComboBoxSelected(cmbTipoEntradaOSalida, errorProvider, this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtCodigo, 15, errorProvider, this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtDescripcion, 100, errorProvider, this);
           
            ActionExecutor.Execute(this, delegate
            {
                tipoMovimiento.TipoEntradaOSalida = ((ItemGenericoComboBox)cmbTipoEntradaOSalida.SelectedItem).Id;
                tipoMovimiento.Codigo = txtCodigo.Text;
                tipoMovimiento.Descripcion = txtDescripcion.Text;
                tipoMovimiento.Mantenimiento = chkMantenimiento.Checked;
                tipoMovimiento.EntregaAPersonal = chkEntregaAPersonal.Checked;
                tipoMovimiento.Estado = Estado.Activo;
             
                var tipoMovimientoDao = new TipoMovimientoDAO();

                tipoMovimiento = tipoMovimientoDao.Update(tipoMovimiento);
                CerroSinAccion = false;
                Close();
            });
        }

     
    }
}
